//
//  MAKCountDownManager.h
//  MAKCommon
//
//  Created by zhuwh on 2017/11/17.
//  Copyright © 2017年 mark. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "MAKSingleton.h"

/*
 * **** 全局定时器管理工具类 ****
 * 功能描述：
 * 为每一个不同间隔时间创建单独一个NSTimer对象用于处理，定时作务。
 * 当定时器中所有定时作务全部执行完毕时，该定时器对象释放
 *
 * 使用样例：
 * 需定时处理对象需实现 MAKCountDownDelegate 协议
 *
 * @interface TestObj : NSObject<MAKCountDownDelegate>
 * @property(nonatomic,assign) NSInteger count;
 * @end

 * @implementation TestObj
 *
 * - (instancetype)init
 * {
 *  self = [super init];
 *  if (self) {
 *      _count = 10;
 *      NSString* key = [NSString stringWithFormat:@"%lu",(unsigned long)self.hash];
 *      [[MAKCountDownManager sharedmanager] addSourceWithTimeInterval:1 identifier:key target:self];
 *  }
 *  return self;
 * }
 *
 * - (void)makCountDownTrigger{
 *  NSString* key = [NSString stringWithFormat:@"%lu",(unsigned long)self.hash];
 *  NSLog(@"%@",key);
 *  _count --;
 *  if (_count<1) {
 *  [[MAKCountDownManager sharedmanager] removeSourceWithTimeInterval:1 identifier:key];
 *  }
 * }
 *
 * @end
 *
 *
 */

@protocol MAKCountDownDelegate // 代理传值方法
- (void)makCountDownTrigger;
@end


@interface MAKCountDownManager : NSObject

SingletonH(manager);

- (void)addSourceWithTimeInterval:(NSTimeInterval)time identifier:(NSString*) identifier target:(id<MAKCountDownDelegate>)target;
- (void)removeSourceWithTimeInterval:(NSTimeInterval)time identifier:(NSString*) identifier;

@end
